home *** CD-ROM | disk | FTP | other *** search
/ Cracking 1 / Cracking I..iso / Tools / Ostatní / aPLib v0.26b / examples / vpascal / aplibud.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2001-12-15  |  2.3 KB  |  91 lines

  1. unit aplibud;
  2.  
  3. (*
  4.  * aPLib compression library  -  the smaller the better :)
  5.  *
  6.  * VPascal interface to aplib.lib
  7.  *
  8.  * Copyright (c) 1998-2000 by Joergen Ibsen / Jibz
  9.  * All Rights Reserved
  10.  *
  11.  * -> VPascal by Veit Kannegieser, 23.09.1998
  12.  *)
  13.  
  14. interface
  15.  
  16. const
  17.   aP_pack_continue=1;
  18.   aP_pack_break   =0;
  19.  
  20. type
  21.   (*$cdecl+*)
  22.   apack_status=function(w1,w2:longint):longint;
  23.   (*$cdecl-*)
  24.   workmem_type=array[0..640*1024-1] of byte;
  25.  
  26. (*$ORGNAME+*) (* aplibu@_aP_pack -> _aP_pack *)
  27.  
  28. function _aP_pack(var quelle;
  29.                   var ziel;
  30.                   laenge:longint;
  31.                   var workmem:workmem_type;
  32.                   status:apack_status):longint;(*$IFDEF OS2*)cdecl;(*$ELSE*)stdcall;(*$ENDIF*)
  33.  
  34. function _aP_workmem_size(laenge:longint):longint;(*$IFDEF OS2*)cdecl;(*$ELSE*)stdcall;(*$ENDIF*)
  35.  
  36. function _aP_depack_asm(var quelle,ziel):longint;(*$IFDEF OS2*)cdecl;(*$ELSE*)stdcall;(*$ENDIF*)
  37.  
  38. function _aP_depack_asm_fast(var quelle,ziel):longint;(*$IFDEF OS2*)cdecl;(*$ELSE*)stdcall;(*$ENDIF*)
  39.  
  40. (*$ORGNAME-*)
  41.  
  42. function cb0(w1,w2:longint):longint;cdecl;
  43. function cb1(w1,w2:longint):longint;cdecl;
  44.  
  45.  
  46. implementation
  47.  
  48. (* if you want abort compression with Esc uncomment following line *)
  49. (*uses crt; *)
  50.  
  51. function _aP_pack(var quelle;
  52.                   var ziel;
  53.                   laenge:longint;
  54.                   var workmem:workmem_type;
  55.                   status:apack_status):longint;external 'APLIB' index 1;
  56.  
  57. function _aP_workmem_size(laenge:longint):longint; external 'APLIB' index 2;
  58.  
  59. function _aP_depack_asm(var quelle,ziel):longint; external 'APLIB' index 3;
  60.  
  61. function _aP_depack_asm_fast(var quelle,ziel):longint;external 'APLIB' index 4;
  62.  
  63. (* callback samples for _aP_pack *)
  64.  
  65. function cb0(w1,w2:longint):longint;assembler;(*$FRAME-*)(*$USES NONE*)
  66.   asm
  67.     mov eax,aP_pack_continue
  68.   end;
  69.  
  70. function cb1_(w1,w2:longint):longint;
  71.   begin
  72.     write(w1:8,w2:8,^m);
  73.     cb1_:=aP_pack_continue;
  74.     (* if you want abort compression with Esc uncomment following line *)
  75.     (*if keypressed then
  76.       if readkey=#27 then
  77.         cb1_:=aP_pack_break; *)
  78.   end;
  79.  
  80. function cb1(w1,w2:longint):longint;assembler;(*$FRAME+*)(*USES NONE*)
  81.   asm
  82.     pushad
  83.       push w1
  84.         push w2
  85.           call cb1_
  86.       mov [ebp-4],eax (* POPAD restores EAX *)
  87.     popad
  88.   end;
  89.  
  90. end.
  91.